『Functional Declarative Design』
Alexander Granin著
GitHub - graninas/functional-declarative-design-methodology: Article: Functional Declarative Design
FDDについて
#WIP
Functional Declarative Design Methodology
Tools for Managing Complexity
主な目標はAccidental ComplexityとEssential Complexityを制御すること
ArchitectureとしてのFreeモナド
Freeモナドを、OOPのInterfaceと同じような機能として使う
たしかにmrsekut.icon
Freeモナドを使って、DSLを作れる
interfaceというか、methodというか、中身が空っぽの関数のみを提供し、
その後、その実装を変える、ということが容易にできる
これがDIとか、Algebraic Effectsの感じに似てるので、アーキテクチャとして採用できる
FreeモナドでDSLを作って、後から実装を変える例こんなかんじ
https://chat.openai.com/c/c17bc2f8-dc8a-4210-be08-3bb4e78eac43
Diagrams and Visual Representations For Modeling and Requirements Analysis
Domain Modeling With Interpretable Domain-Specific Languages
説明としては、OOPと同等のことをFreeモナド使えばできるよ、ってぐらいか
めっちゃおもろいというわけでもない
The Hierarchical Free Monads Approach
Inversion of Control and Dependency Injection
Free Monad Application Architecture
https://gyazo.com/852ea92538d270a6405ed3e5e7d0ca0f
Interfacesが、各DSL命令の定義
Business Logicで、DSLを使ってロジックを記述
Implementationで、その実装の詳細を記述
ここだけが純粋でない箇所
Functional Design Patterns
Design Principles
Case Studies and Practical Applications of Functional Declarative Design
Conclusion
Misc
Background
Importance
Bibliography